Matthias Clasen [Mon, 3 Jun 2019 02:46:12 +0000 (02:46 +0000)]
gl: Avoid a memdup in glyph upload
We don't need to dup the memory here if we
set up the image surface properly. This won't
matter for most glyphs, but some of them can
be big.
Matthias Clasen [Mon, 3 Jun 2019 02:28:24 +0000 (02:28 +0000)]
Merge branch 'big-glyphs' into 'master'
Big glyphs
See merge request GNOME/gtk!904
Matthias Clasen [Mon, 3 Jun 2019 01:06:31 +0000 (01:06 +0000)]
Save gsk output from ci
Matthias Clasen [Mon, 3 Jun 2019 00:51:09 +0000 (00:51 +0000)]
testsuite: Pass --output for gsk tests
We want to keep the output from ci runs.
So we now write the .out.png and .diff.png
files to build/testsuite/gsk/compare/$RENDERER.
Matthias Clasen [Mon, 3 Jun 2019 00:40:43 +0000 (00:40 +0000)]
gsk tests: Add an --output option
This will be used to save artifacts in ci.
Matthias Clasen [Sun, 2 Jun 2019 20:55:34 +0000 (20:55 +0000)]
gl: Fix glyph cache aging
The logic here seems faulty. We want to keep
a timestamp that tells us when the glyph was
last used, so always update the timestamp.
And whenever we use a glyph, it turns 'young'
again, so remove it from the old pixels
accounting.
The (MAX_AGE, MAX_AGE+CHECK_INTERVAL) interval
is only relevant to prevent us from turning
a cached glyph old more than once, and that
is already taken care of.
Matthias Clasen [Sun, 2 Jun 2019 22:22:17 +0000 (22:22 +0000)]
Add code to dump out the glyph caches
Matthias Clasen [Sun, 2 Jun 2019 22:21:05 +0000 (22:21 +0000)]
gl: Improve cache dropping code
There was a TODO here to avoid iterating the
glyphs multiple times, so avoid that. And
actually log the number of glyphs that was dropped.
Matthias Clasen [Sun, 2 Jun 2019 20:53:07 +0000 (20:53 +0000)]
gl: Improve glyph cache logging
Use g_message to be consistent, and make the
message fit a line.
Matthias Clasen [Sun, 2 Jun 2019 20:52:26 +0000 (20:52 +0000)]
gl: Log creation of glyph caches
Now that they can be of different sizes, this
is somewhat interesting.
Matthias Clasen [Sun, 2 Jun 2019 19:14:34 +0000 (19:14 +0000)]
gsk: Test huge glyphs
These don't fit in the glyph cache.
Matthias Clasen [Sun, 2 Jun 2019 19:42:14 +0000 (19:42 +0000)]
gl: Make the glyph cache survive big glyphs
Create an extra atlas of just the right size for
each huge glyph. Not pretty, but works.
Matthias Clasen [Sun, 2 Jun 2019 19:13:38 +0000 (19:13 +0000)]
gsk: Test big glyphs
These are big, but still fit in the glyph cache.
Therefore, the test succeeds.
Benjamin Otte [Mon, 3 Jun 2019 00:22:40 +0000 (00:22 +0000)]
Merge branch 'for-master' into 'master'
For master
See merge request GNOME/gtk!903
Matthias Clasen [Sun, 2 Jun 2019 23:34:02 +0000 (23:34 +0000)]
Merge branch 'wip/chergert/marshalling-gtk4' into 'master'
gtk: fix all uses of g_cclosure_marshal_generic
See merge request GNOME/gtk!905
Christian Hergert [Sun, 2 Jun 2019 21:07:27 +0000 (14:07 -0700)]
gtk: fix all uses of g_cclosure_marshal_generic
This adds specific marshallers for all of the locations where a generic
marshaller is being used. It also provides va_marshallers to reduce the
chances that we get stack traces from perf going through ffi_call_unix64.
This is forward ported from gtk-3-24.
# Conflicts:
# gtk/gtkeventcontrollerkey.c
# gtk/gtkeventcontrollermotion.c
# gtk/gtkgesture.c
# gtk/gtkgesturemultipress.c
Benjamin Otte [Fri, 31 May 2019 03:23:42 +0000 (05:23 +0200)]
gtk-demo: Fix sliding puzzle demo
1. Menubuttons aren't buttons
2. For paintables without aspect ratios, use 1.0
Benjamin Otte [Sun, 2 Jun 2019 12:16:45 +0000 (14:16 +0200)]
transform: Coalesce similar transforms
If somebody does a transform like
scale(5) scale(10) translate(1,1) translate(5,0)
store it instead as
scale(50) translate(6,1)
This way, less memory is consumed and transforms are easier to read.
In particular, this simplifies the typical transforms we do in GTK,
which are just one translation after another.
Matthias Clasen [Sun, 2 Jun 2019 15:54:50 +0000 (15:54 +0000)]
Don't generate mipmaps needlessly
GL_LINEAR doesn't use mipmaps, so don't generate them.
Benjamin Otte [Sun, 2 Jun 2019 13:06:50 +0000 (15:06 +0200)]
transform: Treat 0 perspective transforms as identity
This happens if you apply a perspective transform and its inverse, which
is the negative version of the perspective.
Piotr Drąg [Sun, 2 Jun 2019 12:47:42 +0000 (14:47 +0200)]
Update Polish translation
Timm Bäder [Sun, 2 Jun 2019 09:39:25 +0000 (11:39 +0200)]
gl renderer: Remove homegrown transform_bounds code
GskTransform can do this for us now.
Timm Bäder [Sun, 2 Jun 2019 08:33:30 +0000 (10:33 +0200)]
transform: Add G_GNUC_WARN_UNUSED_RESULT annotations
These functions return the new transform so their return value should
really never be ignored.
Timm Bäder [Sun, 2 Jun 2019 08:25:39 +0000 (10:25 +0200)]
gl renderer: Fix scale computation
We don't need to just look at the scale of the new modelview matrix, but
at the one we get when multiplying the new one with the current one.
Test case attached.
Timm Bäder [Sun, 2 Jun 2019 07:55:11 +0000 (09:55 +0200)]
gl renderer: Use GskTransform in render ops builder
for the modelview matrix. We need this later.
Timm Bäder [Sun, 2 Jun 2019 06:31:44 +0000 (08:31 +0200)]
gl renderer: Fix rounded rect intersection code
Test case attached.
Fixes #1920
Matthias Clasen [Sat, 1 Jun 2019 04:25:08 +0000 (04:25 +0000)]
Add gtkmenubarprivate.h
Move private api into a private header.
Matthias Clasen [Sat, 1 Jun 2019 04:18:23 +0000 (04:18 +0000)]
Cosmetics
Remove comments that are old enough to still
talk about option menus and item factories.
Matthias Clasen [Sat, 1 Jun 2019 19:47:32 +0000 (19:47 +0000)]
Merge branch 'restack-gtk4' into 'master'
GDK W32: Ensure correct stacking of popup windows (GTK4)
See merge request GNOME/gtk!902
Руслан Ижбулатов [Sat, 1 Jun 2019 19:11:13 +0000 (19:11 +0000)]
GDK W32: Ensure correct stacking of popup windows
1) In the SetWindowPos() function (and the WINDOWPOS struct) the
"hWndInsertAfter" argument/field means the window that will be
directly above after the change, not the window that will be
directly below. MSDN says "precedes" for SetWindowPos(), but
WINDOWPOS documentation is more precise: this is the window
behind which the affected window will be placed. Apparently,
Z-axis goes back-to-front.
Therefore, logging should be reworded correctly.
2) When we switch away from the application and then switch back
to a transient window, we need to bring up its transient-owner
(and its transient-owner's owner and so forth) as well,
otherwise our transient (modal) window might be transient for
something that might not be visible.
3) When we bring up a window, we should bring all of its children
(popup windows) on top of it.
Because Windows doesn't provide a function to bring one window
on top of the other, we have to work around this by calling
SetWindowPos() twice, swapping the windows between the calls.
Balázs Úr [Sat, 1 Jun 2019 11:26:53 +0000 (11:26 +0000)]
Update Hungarian translation
Matthias Clasen [Sat, 1 Jun 2019 04:11:22 +0000 (04:11 +0000)]
Remove an unused enum
No use of GtkArrowPlacement anywhere.
Matthias Clasen [Sat, 1 Jun 2019 03:53:13 +0000 (03:53 +0000)]
Merge branch 'global-coords' into 'master'
Drop global coordinates
See merge request GNOME/gtk!899
Matthias Clasen [Sat, 1 Jun 2019 03:47:19 +0000 (03:47 +0000)]
Update css node results
Matthias Clasen [Sat, 1 Jun 2019 03:39:12 +0000 (03:39 +0000)]
Fix menu item accessible
The menu shell is not a direct parent anymore.
Matthias Clasen [Sat, 1 Jun 2019 03:20:03 +0000 (03:20 +0000)]
tests: Fix issues with menu shells
The menu shell is no longer the direct
parent of menu items.
Matthias Clasen [Sat, 1 Jun 2019 03:19:30 +0000 (03:19 +0000)]
menu: Fix destruction
Now that menubar and menu are containers
with internal structure, we need to be
careful about doing the right thing in
forall and dispose.
Matthias Clasen [Sat, 1 Jun 2019 00:03:15 +0000 (00:03 +0000)]
Merge branch 'convert-dialog' into 'master'
Convert dialog
See merge request GNOME/gtk!898
Matthias Clasen [Fri, 31 May 2019 23:25:06 +0000 (23:25 +0000)]
menu: Fix keynav between submenus
Left/Right arrow now work again to enter
or leave a submenu.
Matthias Clasen [Fri, 31 May 2019 20:55:55 +0000 (20:55 +0000)]
menu: Bring back the scroll keybindings
Home, End, Page Up/Down, work again.
Matthias Clasen [Fri, 31 May 2019 20:29:30 +0000 (20:29 +0000)]
menu: Keep selected item in view
This gets us most of the way to working scrolling.
Matthias Clasen [Fri, 31 May 2019 03:20:50 +0000 (03:20 +0000)]
More menu work
Matthias Clasen [Fri, 31 May 2019 02:36:34 +0000 (02:36 +0000)]
More menu restructuring
Make GtkMenuBar use a box as well,
and let GtkMenuShell get the items
from GtkMenuBar and GtkMenu via
a vfunc. Use that to fix the keynav
implementation in GtkMenuShell.
Matthias Clasen [Thu, 30 May 2019 23:07:24 +0000 (23:07 +0000)]
menu: Use a scrolled window
This brings back some support for scrolling.
We still need to reinstate some of the
scroll-to-selected and keynav functionality.
Matthias Clasen [Thu, 30 May 2019 20:10:03 +0000 (20:10 +0000)]
menu: Use a box
This makes some of the GtkMenuShell api
no longer work, since we don't let the
menu shell code maintain the list of
children anymore.
Matthias Clasen [Wed, 29 May 2019 22:02:54 +0000 (22:02 +0000)]
Drop gdk_event_get_root_coords
Matthias Clasen [Wed, 29 May 2019 22:03:10 +0000 (22:03 +0000)]
widget: Stop setting root coords in events
Nothing should use them anymore.
Matthias Clasen [Wed, 29 May 2019 21:49:27 +0000 (17:49 -0400)]
win32: Stop using gdk_event_get_root_coords
It seems we want local coords here anyway.
Matthias Clasen [Wed, 29 May 2019 21:44:48 +0000 (17:44 -0400)]
menu: Remove global coordinates
This commit removes support for scrolling and
for the keep-up triangle from GtkMenu, and gets
rid of all use of global coordinates.
Benjamin Otte [Fri, 26 Apr 2019 15:50:44 +0000 (17:50 +0200)]
menu: Only set position in one place
Benjamin Otte [Wed, 24 Apr 2019 23:27:58 +0000 (01:27 +0200)]
menu: Simplify function
No need to do complicated math when we can just look at the allocation.
Benjamin Otte [Sun, 21 Apr 2019 13:50:24 +0000 (15:50 +0200)]
menuitem: Introduce gtk_menu_item_get_menu_shell()
Returns the parent menu shell or NULL.
Replace all calls to gtk_widget_get_parent() with this function.
Matthias Clasen [Fri, 31 May 2019 19:42:18 +0000 (19:42 +0000)]
simplify: Add a testcase for templates
Matthias Clasen [Fri, 31 May 2019 19:39:17 +0000 (19:39 +0000)]
simplify: Add a testcase for dialogs
Piotr Drąg [Fri, 31 May 2019 18:43:51 +0000 (20:43 +0200)]
Update POTFILES.in
Lubomir Rintel [Thu, 30 May 2019 07:44:44 +0000 (09:44 +0200)]
builder-tool: Rewrite GtkDialog
Changes
<object class="GtkDialog">
<child internal-child="vbox">
<...>
<child internal-child="action_area">...</child>
...
</...>
<packing />
</child>
<object>
to
<object class="GtkDialog">
<child internal-child="content_area">
<...>
...
</...>
</child>
<child internal-child="action_area">...</child>
<object>
Matthias Clasen [Fri, 31 May 2019 15:32:49 +0000 (15:32 +0000)]
Merge branch 'overlay-scrolling-setting' into 'master'
Overlay scrolling setting
See merge request GNOME/gtk!873
Matthias Clasen [Wed, 22 May 2019 19:34:46 +0000 (19:34 +0000)]
scrolled window: respect overlay-scrolling setting
If the gtk-overlay-scrolling setting is FALSE,
don't use overlay scrollbars.
Matthias Clasen [Wed, 22 May 2019 19:24:24 +0000 (19:24 +0000)]
Add a gtk-overlay-scrolling setting
This is in preparation for letting user opt out of
overlay scrolling in the control-center.
Matthias Clasen [Fri, 31 May 2019 10:57:27 +0000 (10:57 +0000)]
Merge branch 'wip/chergert/remove-cclosure' into 'master'
gtk: rely on default marshallers
See merge request GNOME/gtk!893
Benjamin Otte [Fri, 31 May 2019 04:07:11 +0000 (04:07 +0000)]
Merge branch 'for-master' into 'master'
For master
See merge request GNOME/gtk!892
Christian Hergert [Fri, 31 May 2019 03:56:50 +0000 (20:56 -0700)]
gtk: rely on default marshallers
Similar to previous removals of g_cclosure_marshal_VOID__VOID we can remove
other marshallers for which are a simple G_TYPE_NONE with single parameter.
In those cases, GLib will setup both a c_marshaller and va_marshaller for
us. Before this commit, we would not get a va_marshaller because the
c_marshaller is set.
Related to GNOME/Initiatives#10
Benjamin Otte [Fri, 31 May 2019 03:35:04 +0000 (05:35 +0200)]
widget: fix CSS transforms with margins
The CSS transform should operate on the border-box, not the margin box.
So we need to shrink the bounds by the margin before we apply the CSS
transform.
Benjamin Otte [Fri, 31 May 2019 03:23:42 +0000 (05:23 +0200)]
gtk-demo: Fix sliding puzzle demo
1. Menubuttons aren't buttons
2. For paintables without aspect ratios, use 1.0
Niels De Graef [Thu, 30 May 2019 18:49:48 +0000 (18:49 +0000)]
Merge branch 'wip/nielsdg/fix-gir-warnings' into 'master'
Fix some GObject introspection annotations
See merge request GNOME/gtk!891
Niels De Graef [Thu, 30 May 2019 15:05:02 +0000 (17:05 +0200)]
Fix some GObject introspection annotations
Fixes several warnings by the GIR compiler.
Matthias Clasen [Thu, 30 May 2019 12:24:18 +0000 (12:24 +0000)]
Add a testcase
This tests the fix in
1e7225aa1c20525da0.
Benjamin Otte [Thu, 30 May 2019 16:34:51 +0000 (18:34 +0200)]
build: Make script interpreter optional
Running the tests needs it though, so it's only optional without tests.
Benjamin Otte [Thu, 30 May 2019 16:26:32 +0000 (18:26 +0200)]
docs: Fix build
Benjamin Otte [Thu, 30 May 2019 15:48:02 +0000 (15:48 +0000)]
Merge branch 'cairo-script-interpreter' into 'master'
rendernodeparser: Parse cairo script
See merge request GNOME/gtk!876
Benjamin Otte [Wed, 29 May 2019 03:48:38 +0000 (05:48 +0200)]
rendernodeparser: Handle empty Cairo nodes
Cairo nodes can contain a NULL surface if they have never been drawn to.
Make this the default Cairo node.
Benjamin Otte [Tue, 28 May 2019 03:51:20 +0000 (05:51 +0200)]
rendernodeparser: Parse cairo script
Use cairo-script-interpreter to parse the scripts that generate cairo
nodes.
This requires libcairoscriptinterpreter.so to work properly, but if
it isn't found we disable this (unimportant for normal functioning)
code and just emits a parser warning.
The testsuite requires it however or it will fail.
A new test is included that tests all of this.
Matthias Clasen [Thu, 30 May 2019 12:19:08 +0000 (08:19 -0400)]
Remove leftover debug spew
Matthias Clasen [Thu, 30 May 2019 03:44:43 +0000 (03:44 +0000)]
Add gtknative.h to public headers
Matthias Clasen [Thu, 30 May 2019 11:56:05 +0000 (11:56 +0000)]
Merge branch 'lr/builder-tool-templates' into 'master'
builder-tool: Rewrite GtkBuilder templates too
See merge request GNOME/gtk!888
Matthias Clasen [Thu, 30 May 2019 11:48:59 +0000 (11:48 +0000)]
Merge branch 'lr/builder-tool-assistant-crash' into 'master'
builder-tool: Set the parent of newly created GtkAssistantPage
See merge request GNOME/gtk!890
Lubomir Rintel [Thu, 30 May 2019 09:29:50 +0000 (11:29 +0200)]
builder-tool: Set the parent of newly created GtkAssistantPage
...and its property. Otherwise simplify_element() blows up when looking
up the hierarchy to determine a property type.
$ gtk4-builder-tool simplify --3to4 /dev/stdin <<EOF
> <?xml version="1.0" encoding="UTF-8"?>
> <!-- Generated with glade 3.20.2 -->
> <interface domain="nm-applet">
> <object class="GtkAssistant">
> <child>
> <object class="GtkBox" id="confirm_page">
> </object>
> <packing>
> <property name="page_type">confirm</property>
> <property name="complete">True</property>
> </packing>
> </child>
> </object>
> </interface>
> EOF
/dev/stdin: Packing property GtkAssistant::page_type not found
/dev/stdin: Packing property GtkAssistant::complete not found
Segmentation fault (core dumped)
Lubomir Rintel [Thu, 30 May 2019 07:20:52 +0000 (09:20 +0200)]
builder-tool: Rewrite GtkBuilder templates too
Timm Bäder [Thu, 30 May 2019 07:12:24 +0000 (09:12 +0200)]
gl renderer: Properly flip scaled fallback nodes
Fixes cairo nodes in hidpi setups
Matthias Clasen [Thu, 30 May 2019 03:28:41 +0000 (03:28 +0000)]
Merge branch 'wip/baedert/nodeeditor-fuckery' into 'master'
node editor: Add a quick way to save a testcase
See merge request GNOME/gtk!880
Matthias Clasen [Thu, 30 May 2019 03:26:59 +0000 (03:26 +0000)]
Merge branch 'wip/chergert/sysprof-3' into 'master'
profiler: port GdkProfiler to sysprof-3
See merge request GNOME/gtk!886
Christian Hergert [Thu, 30 May 2019 02:02:30 +0000 (19:02 -0700)]
profiler: port GdkProfiler to sysprof-3
This uses the new sysprof-3 ABI to implement the capture writer. It also
uses the statically linked libsysprof-capture-3.a that is provided with
Sysprof for the capture writing to ensure that we do not leak any symbols
nor depend on any additional libraries.
The GTK_TRACE_FD can be used to pass a FD for tracing into Gtk. Sysprof
uses this when the Gtk instrument is selected for recording.
Matthias Clasen [Wed, 29 May 2019 21:18:46 +0000 (21:18 +0000)]
Merge branch 'shortcuts-sizing' into 'master'
Fix shortcuts window sizing
Closes #11
See merge request GNOME/gtk!885
Matthias Clasen [Wed, 29 May 2019 21:06:27 +0000 (17:06 -0400)]
Fix shortcuts window sizing
We were deferring the reflow until map, but this
leads to the section initially having an enormous
height and the window picks up that size before
we have a chance to reflow, This could be seen
in the "Builder" demo in gtk4-demo.
Closes: https://gitlab.gnome.org/GNOME/gtk/issues/11
Christian Hergert [Wed, 29 May 2019 20:48:33 +0000 (13:48 -0700)]
marshallers: add missing g_cclosure_marshal_VOID__VOID fixes
Matthias Clasen [Wed, 29 May 2019 20:38:51 +0000 (20:38 +0000)]
Merge branch 'wip/chergert/marshal-gtk4' into 'master'
marshallers: ensure g_cclosure_marshal_VOID__VOIDv is used
See merge request GNOME/gtk!883
Christian Hergert [Wed, 29 May 2019 20:05:19 +0000 (13:05 -0700)]
marshallers: ensure g_cclosure_marshal_VOID__VOIDv is used
If we set c_marshaller manually, then g_signal_newv() will not setup a
va_marshaller for us. However, if we provide c_marshaller as NULL, it will
setup both the c_marshaller (to g_cclosure_marshal_VOID__VOID) and
va_marshaller (to g_cclosure_marshal_VOID__VOIDv) for us.
Matthias Clasen [Wed, 29 May 2019 18:39:09 +0000 (18:39 +0000)]
Merge branch 'gesture-click' into 'master'
Rename GtkGestureMultiPress to GtkGestureClick
See merge request GNOME/gtk!878
Timm Bäder [Wed, 29 May 2019 18:30:21 +0000 (20:30 +0200)]
node editor: Add a quick way to save a testcase
Matthias Clasen [Wed, 29 May 2019 18:29:57 +0000 (18:29 +0000)]
Merge branch 'global-coords' into 'master'
Drop global coordinates
See merge request GNOME/gtk!879
Matthias Clasen [Wed, 29 May 2019 18:17:07 +0000 (14:17 -0400)]
Mention event controller API in the migration guide
Matthias Clasen [Wed, 29 May 2019 18:11:57 +0000 (18:11 +0000)]
Mention global coordinates in the migration guide
Matthias Clasen [Wed, 29 May 2019 18:03:20 +0000 (18:03 +0000)]
Cosmetics
Remove a doc comment for no-longer-public api.
Matthias Clasen [Wed, 29 May 2019 17:35:29 +0000 (17:35 +0000)]
Cosmetics
Drop a leftover declaration.
Matthias Clasen [Wed, 29 May 2019 17:31:37 +0000 (17:31 +0000)]
Fix the win32 build
gdk_display_get_monitor_at_point was used
in this backend.
Matthias Clasen [Wed, 29 May 2019 15:26:51 +0000 (11:26 -0400)]
Cosmetics
Remove an unused variable.
Matthias Clasen [Wed, 29 May 2019 15:21:20 +0000 (15:21 +0000)]
Drop gdk_surface_move
And its cousin, gdk_surface_move_resize.
These APIs are expecting global coordinates,
which are going away. GTK is not using them
anymore.
Matthias Clasen [Wed, 29 May 2019 15:18:15 +0000 (15:18 +0000)]
Remove a misleading comment
We don't have windowed widgets anymore, and
gdk_surface_move_resize is about to go away.
Matthias Clasen [Wed, 29 May 2019 15:16:39 +0000 (15:16 +0000)]
window: Remove move unused fields
position_constraints_changed is never used.
Matthias Clasen [Wed, 29 May 2019 15:12:34 +0000 (15:12 +0000)]
window: Never call gdk_surface_move
With gtk_window_set_position gone, we should never
come up with a new position to set in this code.
Leave a warning in place and remove the gdk_surface_move
calls.